#ifndef UIFIELDSEARCHWIDGET_H
#define UIFIELDSEARCHWIDGET_H

#include <QWidget>
#include <QComboBox>
#include <ElaComboBox.h>
/**
 * @class UiFieldSearchWidget
 * 
 * 这是一个用于字段搜索的UI小部件类，继承自QWidget。
 */
class UiFieldSearchWidget:public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * 
     * 创建一个字段搜索小部件实例。
     * @param parent 父QWidget，默认为nullptr。
     */
    UiFieldSearchWidget(QWidget* parent = nullptr);

    /**
     * @brief 设置可搜索的字段
     * 
     * @param fields 字段名的字符串列表。
     * 通过这个方法可以设定搜索引擎中显示的可搜索字段。
     */
    void setFields(const QStringList& fields);

    void applyFilter(const QString &field, const QString& text);

    void clearSearch();

    void search();

    inline ElaComboBox* searchBox() {
        return m_fieldBox;
    }

signals:
    /**
     * @brief 搜索信号
     * 
     * 当用户在搜索框中输入文字并触发搜索时，这个信号会被发出。
     * @param fieldName 用户选择的搜索字段名。
     * @param searchText 用户输入的搜索文本。
     */
    void sigSearch(const QString& fieldName,const QString& searchText);

private:
    // 搜索字段下拉框
    class ElaComboBox* m_fieldBox = nullptr;
    // 搜索文本框
    class UiLineEdit* m_searchEdit = nullptr;
};

#endif // UIFIELDSEARCHWIDGET_H
